<?php
// tabele KatalogTA
define('TACATEGO','takeaway_category');
define('TACATELA','takeaway_category_lang');
define('TAKUCHNI','takeaway_kuchnie');
define('TAKUCHLA','takeaway_kuchnie_lang');
define('TAPRODUK','takeaway_produkty');
define('TAPRODCA','takeaway_produkty_categ');
define('TAPRODKU','takeaway_produkty_kuchnie');
define('TAPRODST','takeaway_produkty_statystyki');	
define('TAPRODPL','takeaway_produkty_pliki');
define('TASETTIN','takeaway_settings');
define('TASPRZED','takeaway_sprzedaz');
define('TASPRZSZ','takeaway_sprzedaz_szczegoly');	

require_once 'KatalogTAModel.php';
/**
 * Katalog TakeAway
 * 
 * @author kowal.sylwester
 *
 */
class KatalogTAController extends KatalogTAModel {
	protected $userID; // numer uzytkownika
	
	protected $db; // połaczenie z bazą sklep
	protected $akcja; // zadanie do wykoania przez clasę sklep
	protected $vars; // przekazane zmienne z adresu url
	protected $ustawienia; // dane z tabeli settings
	protected $tacID; // indeks kategorii
	protected $tapID; // numer produktu
	protected $tasID; // numer FV (tranzakcji)
	protected $subkategorie;
	protected $waluta;
	protected $folderTpl;
	protected $folder; // folder publiczny
	protected $folderZdjec; // folder publiczny
	protected $tas1pID; // indeks slownika pomocniczego
	protected $findkeywords; // slowa kluczowe wyszukiwarki
	protected $keywords; //sowa kluczowe strony www
	
	/**
	 * Konstruktor klasy KatalogTAController
	 * 
	 * definiujemy folder publiczny
	 * instalujemy bazę
	 * 
	 * @param $opc - parametry przekazane z constans.php
	 */
	function __construct($opc=null){
		global $parameters,$config,$dispatcher,$settings;
		// sciezka do plikow tpl
		// jesli zamieszczono pliki tpl dla Katalogu w theme to je wczytuj
		// jesli nie to domyslne pliki z view/KatalogTA
		$this->FolderTpl = (tools::_dir_exists("KatalogTA","../application/theme/theme_{$settings['szablon']}/{$settings['ramka_theme']}_{$settings['ramka_theme_kolor']}")) ? "theme_{$settings['szablon']}/{$settings['ramka_theme']}_{$settings['ramka_theme_kolor']}/KatalogTA/" : "KatalogTA/";
		
		$this->folder  = "../public/users/".str_replace('www.','',$_SERVER['HTTP_HOST'])."/KatalogTA/";
		tools::_add_folder($this->folder);
		// sciezka do bazy
		tools::_add_folder($parameters['KatalogTA']['host']);
		$baza = str_replace('www.','',$_SERVER['HTTP_HOST']).".db";
		// instalacja bazy
		$this->db = KatalogTAController::installDB();
		// akcja domyślna
		$this->akcja = null;
		$this->tas1pID = null;
		$this->findkeywords = null;
		
		// ustawienia
		$this->ustawienia = $this->pobiezUstawienia();
		tools::_assign("settings_katalog_ta",$this->ustawienia);
		
		// waluta 
		$this->waluta = "EUR";
		
		// poinformuj koszyk z jakim systemem współpracuje
		//$dispatcher->Koszyk->system = "KatalogTA";
		
		// zmienne z url dla metod wykonywanych z url
		$this->vars = (is_string($config->parameters)) ? explode(',',$config->parameters) : array();
			
		// dodaj wersje jezykowe dla stalych fragmentow katalogu
		$this->load_language();
	}
	
	/**
	 * dodaj do zmiennej __cl tłumaczenia stałych fragm. katalogu TA
	 * @return unknown_type
	 */
	private function load_language(){
		global $config;
		
		//tools::_assign('defaultLanguage',$defaultLanguage);

		if (is_file("../lang/{$config->__lang}.katalogta.lang")){
			$__constants_language = parse_ini_file("../lang/{$config->__lang}.katalogta.lang");
		}
		$katalogta = (isset($__constants_language)) ? $__constants_language : array();
		
		$config->__cl = array_merge($config->__cl,$katalogta);
	
		tools::_assign('__cl',$config->__cl);
	}
	
	/**
	 * okreslenie akcji do wykonania i zapisanie parametrów wykoanaia
	 * @param $akcja_
	 * @return unknown_type
	 */
	public function indexAction($akcja_=null){
		global $config;
		if(is_null($this->akcja) && !is_null($akcja_)) { 
			$this->akcja = $akcja_;
			return;			
		}else {
			$this->vars = (is_string($config->parameters)) ? explode(',',$config->parameters) : array();
			
			if(is_null($this->akcja)) $this->akcja = $this->vars[1];
			
			$this->wykoanjZadanie();
		}		
	}
	
	/**
	 * główna metoda rozdzielająca zadania
	 * @return unknown_type
	 */
	private function wykoanjZadanie(){
		global $config, $objSession,$dispatcher;
	
		tools::_display("{$this->FolderTpl}css.tpl");
		
		
		switch($this->akcja){
			case 'ust_sklepu':
				if ( !$config->__logg && $config->__stan != 'a') { tools::_redirect('zaloguj_sie.html'); return;}
				$this->toolbar("toolbar__ustawienia_start");
				$this->stronaGlownaUstawien();
				break;
				
			case 'ust_lista_kategorii_sklepu':
				if ( !$config->__logg && $config->__stan != 'a') { tools::_redirect('zaloguj_sie.html'); return;}
				if (!is_null($this->vars) && array_key_exists(2,$this->vars)) $this->tacID = $this->vars[2];
				$this->toolbar("toolbar__ustawienia_categ");
				$this->ustawieniaListaKategoriiSklepu();
				break;
				
			case 'ust_slownik_pomocniczy1':
				if ( !$config->__logg && $config->__stan != 'a') { tools::_redirect('zaloguj_sie.html'); return;}
				$this->toolbar("toolbar__ustawienia_slownika_pom1");
				
				break;
				
			case 'ust_zarzadanie_danymi_sklepu':
				if ( !$config->__logg && $config->__stan != 'a') { tools::_redirect('zaloguj_sie.html'); return;}
				$this->toolbar("toolbar__ustawienia_start");
				$this->ustawieniaZarzadzanieDanymiSklepu();
				break;
				
			case 'ust_nowa_kategoria_sklepu':
				if ( !$config->__logg && $config->__stan != 'a') { tools::_redirect('zaloguj_sie.html'); return;}
				if (!is_null($this->vars) && array_key_exists(2,$this->vars)) $this->tacID = $this->vars[2];
				KatalogTAController::toolbar("toolbar__ustawienia_categ");
				tools::_display("{$this->FolderTpl}dodaj_kategorie.tpl");
				break;
				
			case 'ust_nowa_pozycja_slownika_pom1':
				if ( !$config->__logg && $config->__stan != 'a') { tools::_redirect('zaloguj_sie.html'); return;}
				KatalogTAController::toolbar("toolbar__ustawienia_slownika_pom1");
				tools::_display("{$this->FolderTpl}dodaj_slownik_pom1.tpl");
				
				break;
				
			case 'ust_edytuj_kategorie_sklepu':
				if ( !$config->__logg && $config->__stan != 'a') { tools::_redirect('zaloguj_sie.html'); return;}
				if (!is_null($this->vars) && array_key_exists(2,$this->vars)) $this->tacID = $this->vars[2];
				$this->toolbar("toolbar__ustawienia_categ");
				$this->edytujKategorieSklepu();
				break;
			
			case 'ust_nowa_podkategoria_sklepu':
				if ( !$config->__logg && $config->__stan != 'a') { tools::_redirect('zaloguj_sie.html'); return;}
				if (!is_null($this->vars) && array_key_exists(2,$this->vars)) $this->tacID = $this->vars[2];
				tools::_assign("tacpID",$this->vars[2]);
				$this->toolbar("toolbar__ustawienia_categ");
				tools::_display("{$this->FolderTpl}dodaj_kategorie.tpl");
				break;
				
			case 'show_category':
				if (!is_null($this->vars) && array_key_exists(2,$this->vars)) $this->tacID = $this->vars[2];
				if (($config->__isset('s1')) && !is_null($config->s1) && !empty($config->s1) ) $this->tas1pID = $config->s1; // indeks kuchni
				if (($config->__isset('s2')) && !is_null($config->s2) && !empty($config->s2)) $this->findkeywords = $config->s2; // slowo kluczowe
				$this->toolbar("toolbar__main");
				//$this->pokazProduktyPromocyjne($this->tacID);
				$this->wyswietlProduktyDlaKategorii();				
				break;
				
			case 'show_category_page':
				if (!is_null($this->vars) && array_key_exists(2,$this->vars)) $this->tacID = $this->vars[2];
				$page =  (!is_null($this->vars) && array_key_exists(3,$this->vars)) ? $this->vars[3] : null;
				$this->toolbar("toolbar__main");
				$this->wyswietlProduktyDlaKategorii($page);					
				break;
				
			case 'ust_usun_kategorie_sklepu':

				break;
			// PRODUKTY
			case 'show_offert':
				if (!is_null($this->vars) && array_key_exists(2,$this->vars)) $this->tapID = $this->vars[2];
				if (!is_null($this->vars) && array_key_exists(3,$this->vars)) $this->tacID = $this->vars[3];
				$this->wyswietlJedenProdukt();
				break;
				
			case 'show_ofert_to_delete':
				$this->wyswietlJedenProdukt();
				tools::_display("{$this->FolderTpl}czy_usunac_produkt.tpl");
				break;
			
			case 'edytuj_tresc_produktu':
				if ( !$config->__logg ) { tools::_redirect('zaloguj_sie.html'); return;}
				
				if (!is_null($this->vars) && array_key_exists(2,$this->vars)){
					$this->tapID = $this->vars[2];
					$this->tacID = $this->vars[3];
				} 
				$kateg = $this->pobiezJednaKategorieDla_tapID($this->tapID,$this->tacID);
				if(is_array($kateg) && !empty($kateg)){
					tools::_assign("kateg",$kateg);
					$this->tacID = (array_key_exists('tacID',$kateg[0]) ) ? $kateg[0]['tacID'] : null;
				}				
				$this->toolbar("toolbar__produkt_main",'a,u,p,f');
				$this->edytujProduktSklepu();
				break;
				
			case 'add_new':
				if ( !$config->__logg ) { tools::_redirect('zaloguj_sie.html?url=search,,add_new.html',null,0,"php"); return;}
				$this->tacID = $this->vars[2];
				$this->toolbar("toolbar__main");
				tools::_assign("kateg",$this->pobiezDaneKategoriizBazy($this->tacID,$config->__lang));
				tools::_assign("tacID",$this->tacID );
				tools::_display("{$this->FolderTpl}dodaj_produkt.tpl");
				
				break;	
				
				
			
			// KONFIGURACJA
			case 'ust_konfiguracja_sklepu':
				if ( !$config->__logg && $config->__stan != 'a') { tools::_redirect('zaloguj_sie.html'); return;}
				
				$this->toolbar("toolbar__main");
				tools::_display("{$this->FolderTpl}ustawienia.tpl");
				break;
				
			default:
				$this->toolbar("toolbar__main");
				tools::_display("{$this->FolderTpl}default_page.tpl");
				break;
				

		}
		//print_r($this->vars);
		
		// dodaj sowa kluczowe do strony www
		tools::_assign("modelkeywords",$this->keywords);
		
	}
	
	

	
	
	/**
	 * instalacja bazy dla 21wSklep
	 * @return obiekt bazy
	 */
	static function installDB(){
		global $parameters;
		$nazwa_bazy__ = str_replace('www.','',$_SERVER['HTTP_HOST']).".db";
		// przygotowanie parametrów do zalozenia bazy 
		// UWAGA baza SQLITE 3
		$parametryBazy= array('drivers'=>array('driver'=>'sqlite3'),
							  'sqlite'=>array('host'=>$parameters['KatalogTA']['host'],
											  'database'=>$nazwa_bazy__ ));
		$db = config::getDB($parametryBazy);
		
		$parameters['sqlite']['host'] = $parameters['KatalogTA']['host'];
		$parameters['drivers']['dbinstall'] = $parameters['KatalogTA']['dbinstall'];
		config::_instal_database($parameters['drivers']['driver'],$db);
		
		return $db;
	}
	
	
	/**
	 * Generuje pasek toolbar
	 * @param $tool__
	 * @return unknown_type
	 */
	private function toolbar($tool__,$typ='a'){
		global $objSession, $config;
	    $keys = explode(",",$typ);
        $values = explode(",",$typ);
        for ($i=0; $i < count($keys); $i++) {
			$key = $keys[$i];
			$typ__["{$key}"] = $values[$i];
        }
		$tollsIcons = $this->przygotujToolBar($tool__);
		tools::_assign("toolbar_links",$tollsIcons);		
		if ( $config->__logg && is_array($typ__) && array_key_exists("{$config->__stan}",$typ__) ){
			tools::_display("{$this->FolderTpl}toolbar.tpl");			
		} 
	}
	
	
	/**
	 * ustawienia paska przyciskow dla katalogu TA
	 * @param unknown_type $tool__
	 * @return unknown_type
	 */
	private function przygotujToolBar($tool__){
		global $config;
		switch($tool__){
			case'toolbar__main':		
				$toolbar = array(',,ust_sklepu'=>array('nazwa'=>$config->__cl["tool_ustawienia_katalogu"],'ikona'=>'16_ustawienia.png'));
					$toolbar[",,ust_nowa_kategoria_sklepu"] = array('nazwa'=>$config->__cl["tool_dodaj_kategorie"],'ikona'=>'16_dodaj_kategorie.png');
					if(!is_null($this->tacID)) $toolbar[",,ust_nowa_podkategoria_sklepu,{$this->tacID}"] = array('nazwa'=>$config->__cl["tool_dodaj_podkategorie"],'ikona'=>'16_dodaj_sub_kateg.png');
					if(!is_null($this->tacID)) $toolbar[",,ust_edytuj_kategorie_sklepu,{$this->tacID}"] = array('nazwa'=>$config->__cl["tool_edytuj_podkategorie"],'ikona'=>'16_edytuj_kateg.png');
					if(!is_null($this->tacID)) $toolbar[",KatalogTA,usunKategorieKatalogu,{$this->tacID}"] = array('nazwa'=>$config->__cl["tool_usun_podkategorie"],'ikona'=>'16_usun_kategorie.png');
				
				$toolbar[",,add_new,{$this->tacID}"] = array('nazwa'=>$config->__cl["tool_dodaj_nowy_produkt"],'ikona'=>'16_produkt_add.png');
				break;
			case 'toolbar__ustawienia_start':
				$toolbar = array(',,ust_lista_kategorii_sklepu'=>array('nazwa'=>$config->__cl["tool_lista_kategorii"],'ikona'=>'16_lista_kategorii.png'),
								',,ust_slownik_pomocniczy1'=>array('nazwa'=>$config->__cl["tool_lista_slownik_pomocniczy_01"],'ikona'=>'16_slownik_pomocniczy.png'),
								',,ust_konfiguracja_sklepu'=>array('nazwa'=>$config->__cl["tool_ustawienia_parametrow_katalogu"],'ikona'=>'16_baza_danych.png'));
				break;
			case 'toolbar__ustawienia_categ':
				$toolbar = array(',,ust_nowa_kategoria_sklepu'=>array('nazwa'=>$config->__cl["tool_dodaj_kategorie"],'ikona'=>'16_dodaj_kategorie.png'));
					if(!is_null($this->tacID)) $toolbar[",,ust_nowa_podkategoria_sklepu,{$this->tacID}"] = array('nazwa'=>$config->__cl["tool_dodaj_podkategorie"],'ikona'=>'16_dodaj_sub_kateg.png');
					if(!is_null($this->tacID)) $toolbar[",,ust_edytuj_kategorie_sklepu,{$this->tacID}"] = array('nazwa'=>$config->__cl["tool_edytuj_podkategorie"],'ikona'=>'16_edytuj_kateg.png');
					if(!is_null($this->tacID)) $toolbar[",KatalogTA,usunKategorieKatalogu,{$this->tacID}"] = array('nazwa'=>$config->__cl["tool_usun_podkategorie"],'ikona'=>'16_usun_kategorie.png');
					//if(!is_null($this->tacID)) $toolbar[",,add_new,{$this->tacID}"] = array('nazwa'=>'Dodaj nowy produkt','ikona'=>'16_produkt_add.png');
				break;
				
			case 'toolbar__ustawienia_slownika_pom1':
				$toolbar = array(',,ust_nowa_pozycja_slownika_pom1'=>array('nazwa'=>$config->__cl["tool_dodaj_do_slownika"],'ikona'=>'16_dodaj_kategorie.png'));
					if(!is_null($this->tas1ID)) $toolbar[",,ust_edytuj_pozycje_slownika_pom1,{$this->tas1ID}"] = array('nazwa'=>$config->__cl["tool_edytuj_pozycje_slownika"],'ikona'=>'16_edytuj_kateg.png');
					if(!is_null($this->tas1ID)) $toolbar[",KatalogTA,usunPozycjeSlownikaPom1,{$this->tas1ID}"] = array('nazwa'=>$config->__cl["tool_usun_pozycje_slownika"],'ikona'=>'16_usun_kategorie.png');
				
				break;
			case 'toolbar__produkt_main':
		 		$toolbar = array(",,edytuj_tresc_produktu,{$this->tapID},{$this->tacID}"=>array('nazwa'=>$config->__cl["tool_edytuj_tresc_produktu"],'ikona'=>'16_produkt_edit.png'),
								",KatalogTA,usunProduktZSklepu,{$this->tacID},{$this->tapID}"=>array('nazwa'=>$config->__cl["tool_usun_produkt"],'ikona'=>'16_produkt_delete.png'),
		 						",,show_offert,{$this->tapID},{$this->tacID}"=>array('nazwa'=>$config->__cl["tool_podglad_strony_produkt"],'ikona'=>'16_produkt_dalej.png'));
		 		break;
		}
		return $toolbar;
	}
	

	/**
	 * Link dodaj nowy Produkt
	 * @return unknown_type
	 */
	public function przyciskDodajNowyProduktAction(){
		tools::_display("{$this->FolderTpl}dodaj_produkt_link.tpl");
	}
	
	/**
	 * formularz wyszukiwania - faza 0
	 * @return unknown_type
	 */
	public function wyswietlFormularzWyszukiwaniaAction(){
		$kategorie = $this->pobierzListeSubkategoriiJedenPoziom(0);	
		tools::_assign("kat0",$kategorie);	
		tools::_display("{$this->FolderTpl}wyszukiwanie_zaawansowane.tpl");
	}
	
	public function wyswietlSubKategorieDlaKategoriiAction($tacpID){
		$kategorie = $this->pobierzListeSubkategoriiJedenPoziom($tacpID);
		$lista = null;
		if(is_array($kategorie)){
			foreach ($kategorie as $id => $kat) {
				$lista .= "<option value=\"{$kat["tacID"]}\">{$kat["tacNazwa"]}</option>";				
			}
		}
		echo $lista;
		exit();
	}
	
	public function wyswietlSubKategorieDlaKategoriiDwaPoziomyAction($tacpID){
		$kategorie = $this->pobierzListeSubkategoriiJedenPoziom($tacpID);
		$lista = null;
		if(is_array($kategorie)){
			foreach ($kategorie as $id => $kat) {
				$lista .= "<option value=\"{$kat["tacID"]}\">{$kat["tacNazwa"]}</option>";
				//$lista .= "<optgroup label=\"{$kat["tacNazwa"]}\">";	
				$subkategorie = $this->pobierzListeSubkategoriiJedenPoziom($kat["tacID"]);
				if(is_array($subkategorie)){
					foreach ($subkategorie as $ids => $kats) {
						$lista .= "<option value=\"{$kats["tacID"]}\">&nbsp;&nbsp;&nbsp;&nbsp;{$kats["tacNazwa"]}</option>";	
	
					}
				}
				//$lista .= "</optgroup>";			
			}
		}
		echo $lista;
		exit();
	}
	
	
	/**
	 * mapa strona głowna - najblirzsze lokalizacje
	 * @return unknown_type
	 */
	public function wyswietlMapeNajblizszychLokalizacjiAction(){
//		$userIP = tools::getUserIP();
//		$userGeoInfo = tools::getUserLatLng($userIP);		
		tools::_display("{$this->FolderTpl}najblizsze_lokalizacje_na_mapie.tpl");
	}
	
	public function listaXMLLokalizacjiProduktowLatLngAction($tacID=null){
		$result = $this->pobiezListeLatLng($tacID);
		
		if (class_exists("DOMDocument__")) $this->generateXML5($result);
		else $this->generateXML4($result);
		exit;
	}
	
	private function generateXML4($result){
		header("Content-type: text/xml"); 
		echo '<markers>';
		foreach ( $result as $row){  
		  echo '<marker ';
		  echo 'name="' . tools::przygotujTxtDlaXML($row['tapNazwa']) . '" ';
		  echo 'address="' . tools::przygotujTxtDlaXML($row['tapLokalizacja'].$row['tapAdres'])  . '" ';
		  echo 'lat="' . $row['tapLat'] . '" ';
		  echo 'lng="' . $row['tapLng'] . '" ';
		  echo 'pID="' . $row['tapID'] . '" ';
		  echo 'cID="' . $row['tacID'] . '" ';
		  echo '/>';
			
		} 
		echo '</markers>';
	}
	
	private function generateXML5($result){
	
		// Iterate through the rows, adding XML nodes for each
			$dom = new DOMDocument("1.0");
			$node = $dom->createElement("markers");
			$parnode = $dom->appendChild($node); 
			
			foreach ( $result as $row){ 
			  // ADD TO XML DOCUMENT NODE  
			  $node = $dom->createElement("marker");  
			  $newnode = $parnode->appendChild($node);   
			  $newnode->setAttribute("name", $row['tapNazwa']);
			  $newnode->setAttribute("address", $row['tapLokalizacja'].$row['tapAdres']);  
			  $newnode->setAttribute("lat", $row['tapLat']);  
			  $newnode->setAttribute("lng", $row['tapLng']);  
			  $newnode->setAttribute("type", $row['tapID']);
			  $newnode->setAttribute("zoom", $row['tacID']);
			} 
			
			header("Content-type: text/xml"); 
			echo $dom->saveXML();
			
	}

	/**
	 * Wykoanie formularza Nowa kategoria i przekierowanie na
	 * edycje nowo dodanej kategorii
	 * 
	 * @return unknown_type
	 */
	public function zapiszNowaKategorieKataloguAction(){
		global $objSession, $config;
		if ( !$config->__logg && $config->__stan != 'a') { tools::_redirect('zaloguj_sie.html'); return;}
		$this->vars[2] = $this->zapiszNowaKategorieDoBazy();
		// podstawaimy by wyswietlic liste ofert dla kategori rodzica
		$this->tacID = $config->tacpID;
		$this->lokalizacja = "";
		tools::_redirect($config->page.",,ust_nowa_podkategoria_sklepu,{$this->tacID}.html",null,0,'php');
		return;
	}
	
	public function zapiszEdytowanaKategorieSklepuAction(){
		global $objSession,$config;
		if ( !$config->__logg && $config->__stan != 'a') { tools::_redirect('zaloguj_sie.html'); return;}
		$this->vars[1] = "ust_lista_kategorii_sklepu";
		$this->vars[2] = $config->tacID;
		$this->akcja = "ust_lista_kategorii_sklepu";
		$this->zapiszEdytowanaKategorieDoBazy();
		tools::_redirect("{$config->page},,ust_lista_kategorii_sklepu,{$config->tacID}.html",null,0,"php");		
	}
	
	/**
	 * odtwoz strukture kategorii dla wybranej kategorii - dodawanie produktu
	 * @param int $tacID
	 * @return text
	 */
	public function strukturaWybranejKategoriiAction($tacID=null){
		$this->lokalizacja = "";
		$this->strukturaWybranejKategorii($tacID);
		return $this->lokalizacja;
	}
	
	/**
	 * odtworz strukture kategorii dla wybranego produktu lub kategorii
	 * - wyswietlanie produkty lub listy produktow
	 * @param int $tacID
	 * @return html
	 */
	public function lokalizacjaWybranegoProduktuAction($tacID=null){
		$this->lokalizacja = "";
		$this->strukturaWybranejKategoriiZLinkami($tacID);
		echo  $this->lokalizacja;
	}
	
	public function zapiszNowaPozycjeSlownikaPom1Action(){
		global $objSession,$config;
		if ( !$config->__logg && $config->__stan != 'a') { tools::_redirect('zaloguj_sie.html'); return;}
		$this->zapiszNowaPozycjeSlownikaPom1DoBazy();
		$this->akcja = "ust_slownik_pomocniczy1";	
	}
	
	public function usunKategorieKataloguAction($tacID=null){
		global $objSession,$config;
		if ( !$config->__logg && $config->__stan != 'a') { tools::_redirect('zaloguj_sie.html'); return;}
		$this->usunKategorieSklepuZBazy($tacID);
		$this->akcja = "null";		
	}
	
	public function wyswietlKategorieKataloguAction(){
		//$this->toolbar("toolbar__ustawienia_categ");
		tools::_assign("tacID",$this->tacID);
		//$this->wyswietlKategorieSklepu();
		$this->wyswietlKategorieSklepuNowe();
	}
	
	public function wyswietlKategorieKataloguDodawanieKategoriiAction(){
		tools::_assign("tacID",$this->tacID);
		$this->wyswietlKategorieSklepuNowe();	
	}
	
	public function wyswietlKategorieKataloguDodawanieKategoriiNoweAction(){
		tools::_assign("tacID",$this->tacID); // potrzebne do okreslenia struktury wybranej kategorii
		$this->wyswietlKategorieSklepuNowe();
	}
	
	public function wyswietlWyszukiwarkePodstronyAction(){
	
		$kategorie = $this->pobierzListeSubkategoriiJedenPoziom(0);	
		tools::_assign("kat0",$kategorie);
		tools::_display("{$this->FolderTpl}wyszukiwanie_zaawansowane_waskie.tpl");
	}
	
	public function zapiszNowyProduktSklepuAction(){
		global $objSession,$config,$dispatcher;
		try{
			if ( !$config->__logg ) {
				$dispatcher->Panel_Komunikaty->msg = $config->__cl["zaloguj_sie_by_dodac_pozycje_katalogu"];				
				tools::_redirect("zaloguj_sie.html?url={$config->page},,add_new.html",null,3); return;								
			}
			$this->tacID = $config->tacID;
			$this->zapiszNowyProduktDoBazy();
			$this->zapiszLogoProduktuNAaDysk();
			//tools::_redirect($config->page.",,show_offert,$this->tapID.html",null,0,'php');	
		}catch (Exception $e) {
		   $dispatcher->Panel_Komunikaty->msg = $e->getMessage();
		}
	}
	
	private function wyswietlJedenProdukt(){
		global $objSession, $config;
		$kateg = $this->pobiezJednaKategorieDla_tapID($this->tapID,$this->tacID);
		tools::_assign("kateg",$kateg);			
		if ( $config->__logg && $objSession->GetUserID() == $kateg[0]['tauID'] || $config->__logg && $config->__stan == 'a' ) $this->toolbar("toolbar__produkt_main",'a,u,p,f');
		$this->wyswietlProduktSklepu();
	}
	
	public function zapiszEdytowanyProduktSklepuAction(){
		global $objSession,$config,$dispatcher;
		try{
			
			if ( !$config->__logg) { tools::_redirect('zaloguj_sie.html'); return;}
			$this->tacID = $config->tacID;
			$this->tapID = $config->tapID;
			$this->zapiszEdytowanyProduktDoBazy();
			$this->zapiszLogoProduktuNAaDysk();
			tools::_redirect($config->page.",,show_offert,{$this->tapID},{$this->tacID}.html",null,0,'php');
			
		}catch (Exception $e) {
		   $dispatcher->Panel_Komunikaty->msg = $e->getMessage();
		}
	}
	
	public function usunProduktZSklepuAction($params=null){
		global $objSession,$config;
		if ( !$config->__logg && $config->__stan != 'a') { tools::_redirect('zaloguj_sie.html'); return;}
		if (!is_null($this->vars) && array_key_exists(2,$this->vars)) $this->tacID = $this->vars[2];
		if (!is_null($this->vars) && array_key_exists(3,$this->vars)) $this->tapID = $this->vars[3];
		if($config->delete == "ok"){	
			$this->usunProduktSklepuZBazy($this->tacID,$this->tapID);
			$this->akcja = "show_category";
		}else{
			$this->akcja = "show_ofert_to_delete";
			
		}
	}
	
	public function usunPlikProduktuAction($tafID_tapID=null){
		$tmp__ = explode('_',$tafID_tapID);
		$tafID = $tmp__[0];
		$tapID = $tmp__[1];
		$result = $this->usunJedenPlikProduktu($tafID,$tapID);
		echo ($result[0]==1) ? 1 : $result[1];
		exit;
	}
	
	
	public function zapiszUstawieniaSklepuAction(){
		global $config, $objSession;
		if ( !$config->__logg  && $config->__stan == 'a'){	
			tools::_redirect('zaloguj_sie.html'); return;
		}
	
		$this->zapiszUstawieniaSklepu();
		tools::_redirect($config->page.".html",null,0,'php');
	}
	
	
	/**
	 * odbior i zapis potwierdzenia z dotpay
	 * @param $sess
	 * @return unknown_type
	 */
	public function DotPayUrlcAction($sess="null"){
		global $config;
		// sprawdzenie czy tranzakcja z mojego kontka DotPay
		if ($config->__isset("id") && $config->id == $this->ustawienia['numer_id_dotpay']){
			$this->zapiszPotwierdzenieDoBazy();	
			echo "OK";		
		}else{
			echo "ZŁY NUMER ID";	
		}			
	}
	
	/**
	 * zerowanie wartości koszyka po powrocie z systemu DotPay
	 * @return unknown_type
	 */
	public function wyzerujKoszykAction(){
		global $dispatcher;		
		$dispatcher->Koszyk->wyzerujKoszykAction();
	}
	
	/**
	 * metoda wykonywana z poziomu clasy Koszyk
	 * zapisuje dane znajdujace się w koszyku do bazy gdzie czekaja na potwierdzenie
	 * 
	 * @param $koszyk
	 * @return unknown_type
	 */
	public function zapiszNowaTranzakcje($tranzakacjaID=nyll,$koszyk=nyll){
		if(!is_null($tranzakacjaID))$this->zapiszNowaTranzakcjeDoBazy($tranzakacjaID,$koszyk);
	}
	
	
	protected function wyswietlKategorieSklepuNowe(){
		$categ__ = $this->pobiezDaneKategoriizBazy();
		$this->lokalizacja = array();
		$this->strukturaWybranejKategoriiTablica($this->vars[2]);
		echo "<div id=\"select-category\">";
		switch($this->vars[1]){
		case "add_new":
			tools::_assign("action_for_category",$this->vars[1]);			
			KatalogTAController::wyswietlListeKategoriiSklepuNowyProdukt(0,0,$categ__,"{$this->FolderTpl}lista_kategorii_add_produkt.tpl","select-category-list",$this->lokalizacja,$this->vars[2]);
			break;
		case "ust_nowa_kategoria_sklepu";
			if ($this->tacID > 0 ){
				tools::_assign("tacpID",$this->vars[2]);
				$this->vars[1] = "ust_nowa_podkategoria_sklepu";
			}
			
			tools::_assign("action_for_category",$this->vars[1]);
			KatalogTAController::wyswietlListeKategoriiSklepuNowe(0,0,$categ__,"{$this->FolderTpl}lista_kategorii_add_kategorii.tpl","select-category-list",$this->lokalizacja,$this->vars[2]);	
			break;
			
		case "ust_nowa_podkategoria_sklepu";
			tools::_assign("action_for_category",$this->vars[1]);
			KatalogTAController::wyswietlListeKategoriiSklepuNowe(0,0,$categ__,"{$this->FolderTpl}lista_kategorii_add_kategorii.tpl","select-category-list",$this->lokalizacja,$this->vars[2]);	
			break;			
		case "ust_lista_kategorii_sklepu":
			tools::_assign("action_for_category",$this->vars[1]);
			KatalogTAController::wyswietlListeKategoriiSklepuNowe(0,0,$categ__,"{$this->FolderTpl}lista_kategorii_add_kategorii.tpl","select-category-list",$this->lokalizacja,$this->vars[2]);	
			break;			
		default:	
			KatalogTAController::wyswietlListeKategoriiSklepuNowe(0,0,$categ__,"{$this->FolderTpl}lista_kategorii.tpl","select-category-list",$this->lokalizacja,$this->vars[2]);
		}
		echo "</div>";	
	}	
	
	public function wyswietlKategorieDefaultPageAction(){
	
		$categ__ = $this->pobiezDaneKategoriizBazyNaPoziomy();
		echo "<div id=\"category-default-page\">";
		KatalogTAController::wyswietlListeKategoriiSklepuNowe(0,0,$categ__,"{$this->FolderTpl}lista_kategorii.tpl","select-category-list",$this->lokalizacja,$this->vars[2],2);
		echo "</div>";
	}


	
	public function wyswietlKategorieDodajProduktAction(){
		$categ__ = $this->pobiezDaneKategoriizBazy();
		echo "<div class=\"sidebarmenu\">";
		
		echo "</div>";
	}
	
	public function wyswietlListeSlownikaKuchniDlaNowegoProduktuAction(){
		$slownik = $this->pobiezDaneSlownikaPom1zBazy(null);
		tools::_assign("pom1",$slownik);
		tools::_display("{$this->FolderTpl}slownik_pom1_li.tpl");		
	}
	
	public function wyswietlListeSlownikaKuchniDlaEdytowanegoProduktuAction($vars){
		$a = explode("#",$vars);
		if(is_array($a) && array_key_exists(0,$a) && array_key_exists(1,$a) ){
			$kuchnie = $this->pobiezDaneSlownikaPom1zZaznaczeniemProduktu($a[0],$a[1]);
			tools::_assign("pom1",$kuchnie);
			tools::_display("{$this->FolderTpl}slownik_pom1_li_edycja.tpl");
		}		
	}
	
	public function wyswietlListeSlownikaKuchniDlaProduktuAction($vars){
		$a = explode("#",$vars);
		if(is_array($a) && array_key_exists(0,$a) && array_key_exists(1,$a) ){
			$kuchnie = $this->pobiezDaneSlownikaPom1zBazyDlaProduktu($a[0],$a[1]);
			tools::_assign("kuchnie",$kuchnie);
			tools::_display("{$this->FolderTpl}slownik_pom1_li_lista.tpl");
		}
	}
	
	public function wyswietlListeSlownikaKuchniDlaWyszukiwarkiAction(){
		$slownik = $this->pobiezDaneSlownikaPom1zBazy(null);
		tools::_assign("pom1",$slownik);
		tools::_display("{$this->FolderTpl}slownik_pom1_options.tpl");		
	}
	
	public function wyswietlPlikiProduktuAction($vars){
		$a = explode("#",$vars);
		if(is_array($a) && array_key_exists(0,$a) && array_key_exists(1,$a) ){
			$grupa = (array_key_exists(2,$a)) ? $a[2] : 0;
			$pliki = $this->pobiezDaneOPlikachProduktuKategorii($a[0],$a[1],$grupa);
			if(is_array($pliki) && count($pliki)>= 1 ) {
				tools::_assign("pliki",$pliki);
				tools::_display("{$this->FolderTpl}lista_plikow_produktu_{$grupa}.tpl");
			}
		}		
	}
	
	public function wyswietlPlikiProduktuDoEdycjiAction($vars){
		$a = explode("#",$vars);
		if(is_array($a) && array_key_exists(0,$a) && array_key_exists(1,$a) ){
			$grupa = (array_key_exists(2,$a)) ? $a[2] : 0;
			$pliki = $this->pobiezDaneOPlikachProduktuKategorii($a[0],$a[1],$grupa);
			if(is_array($pliki) && count($pliki)>= 1 ) {
				tools::_assign("pliki",$pliki);
				tools::_display("{$this->FolderTpl}lista_plikow_produktu_{$grupa}_edycja.tpl");
			}
		}		
	}
	
	
	protected function edytujKategorieSklepu(){
		$kategorie = $this->pobiezDaneKategoriizBazy($this->tacID);
		tools::_assign("kateg",$kategorie);
		tools::_display("{$this->FolderTpl}edytuj_kategorie.tpl");
	}

	protected function stronaGlownaUstawien(){

	}
	
	protected function ustawieniaListaKategoriiSklepu(){
		tools::_assign("tacID",$this->tacID);		
		$this->wyswietlKategorieSklepuNowe();
	}
	
	protected function ustawieniaZarzadzanieDanymiSklepu(){

	}
	
	
	
	
	//
	//
	// PRODUKTY
	//
	//
	
	protected function pokazProduktyPromocyjne($tacID__=null){
		global $objSession;
		tools::_assign("kateg",array('tacNazwa'=>"Produkty promocyjne"));
		$produkty = $this->pobierzListeProduktowPromocyjnychSklepu($tacID__);
		if(is_array($produkty) && !empty($produkty)){
			tools::_assign("produkty",$produkty);
			tools::_display("{$this->FolderTpl}lista_produktow.tpl");
		}
	}
	
	protected function wyswietlProduktSklepu(){
		$produkty = $this->pobierzJedenProdukt($this->tapID,$this->tacID);
		if(is_array($produkty))tools::_assign("produkt",$produkty);
		tools::_display("{$this->FolderTpl}wyswietl_produkt.tpl");
	}
	
	protected function wyswietlProduktyDlaKategorii($page = null){
		global $config;
		if(is_null($this->tacID) || empty($this->tacID)){
			$this->tacID = $this->pobiezJednaDomyslnaKategorie();
			$cat__ = $this->pobierzListeSubkategoriiSklepuNaPoziomy();
			
		}else{
			$kateg = $this->pobiezDaneKategoriizBazy($this->tacID,$config->__lang);
			tools::_assign("kateg",$kateg);
			$produkty = $this->pobierzListeProduktowSklepu($this->tacID,$page);
			if(is_array($produkty))tools::_assign("produkty",$produkty);
			tools::_display("{$this->FolderTpl}lista_produktow.tpl");
			
			tools::_assign("selectedLokalizacja",$this->strukturaWybranejKategoriiAction($this->tacID));
			tools::_display("{$this->FolderTpl}lokalizacje_kategorii_na_mapie.tpl");
		}
	}
	
	public function wyswietlPozostaleLokalizacjeDlaProduktuAction($vars = null){
		$a = explode("#",$vars);
		if(is_array($a) && array_key_exists(0,$a) && array_key_exists(1,$a) ){		
			$oddzialy = $this->pobierzPozostaleListeLokalizacjeProduktuZBazy($a[0],$a[1]);
			if(is_array($oddzialy)){
				tools::_assign("oddzialy",$oddzialy);
				tools::_display("{$this->FolderTpl}lista_oddzialow_produktu.tpl");
			}
		}		
	}
	
	protected function edytujProduktSklepu(){
		$result = $this->pobierzJedenProduktDoEdycji();
		tools::_assign("produkt",$result);
		tools::_display("{$this->FolderTpl}edytuj_produkt.tpl");
				
	}
	
	public function wyswietlListeKategoriiSklepu($categID,$pcategID,$category,$form=null,$treeID = null,$vars=null){
		if (!is_array($category)) return;
		$i = 0;
		$sub = 'open';
		$czy_jest_nastepny_poziom = false;
		if ($sub){
				foreach ($category as $key1 => $rows) {
					if ( $rows['tacpID'] == $categID ){	
						$czy_jest_nastepny_poziom = true;
						if ($sub == 'open'){ 
							$id = (!is_null($treeID))?" id=\"{$treeID}\"":"";
							echo "<ul{$id}>";
							$sub = 'close';				
						}
						/*
						if($rows['tacActiveLevel'] == 1){
							$this->lokalizacja = "";
							$this->strukturaWybranejKategorii($rows['tacID']);
							$rows['struktura'] = $this->lokalizacja;
						}
						*/
						tools::_assign('categ',$rows);

						echo "<li> ";	

						tools::_display($form);						
						KatalogTAController::wyswietlListeKategoriiSklepu($rows['tacID'],$rows['tacpID'],$category,$form,"",$vars);
						
						echo '</li>';
						$i++;
					}
				}			
			if ($sub == 'close') echo '</ul>';
		}
	}
	
	public function wyswietlListeKategoriiSklepuNowe($categID,$pcategID,$category,$form=null,$treeID = null,$vars=null,$currentID=null,$poziom__=null){
		if (!is_array($category)) return;
		$i = 0;
		$sub = 'open';
		$czy_jest_nastepny_poziom = false;
		if ($sub){
				foreach ($category as $key1 => $rows) {
					if ( $rows['tacpID'] == $categID ){	
						$czy_jest_nastepny_poziom = true;
						if ($sub == 'open'){ 
							$id = (!is_null($treeID))?" id=\"{$treeID}\"":"";
							echo "<ul{$id}>";
							$sub = 'close';				
						}

						tools::_assign('categ',$rows);
						if(is_array($vars) && array_key_exists($rows['tacID'],$vars)){
							if ( $currentID  == $rows['tacID'])
								echo "<li class=\"current-li\" id=\"li_{$rows['tacID']}\">";
							else
								echo "<li class=\"selected-li\" id=\"li_{$rows['tacID']}\">";
						}else{
							echo "<li class=\"clossed\" id=\"li_{$rows['tacID']}\">";       
						}	

						tools::_display($form);	
						$poziom__ = (is_null($poziom__)) ? null : $poziom__++;	
						if(is_null($poziom__) || !is_null($poziom__) && $poziom__ <= 2 )KatalogTAController::wyswietlListeKategoriiSklepuNowe($rows['tacID'],$rows['tacpID'],$category,$form,"__{$rows['tacID']}",$vars, $currentID,$poziom__);
						
						echo '</li>';
						$i++;
					}
				}			
			if ($sub == 'close') echo '</ul>';
		}
	}

	public function wyswietlListeKategoriiSklepuNowyProdukt($categID,$pcategID,$category,$form=null,$treeID = null,$vars=null,$currentID=null){
		if (!is_array($category)) return;
		$i = 0;
		$sub = 'open';
		$czy_jest_nastepny_poziom = false;
		if ($sub){
				foreach ($category as $key1 => $rows) {
					if ( $rows['tacpID'] == $categID ){	
						$czy_jest_nastepny_poziom = true;
						if ($sub == 'open'){ 
							$id = (!is_null($treeID))?" id=\"{$treeID}\"":"";
							echo "<ul{$id}>";
							$sub = 'close';				
						}
						tools::_assign('categ',$rows);
						$class = ($rows['tacActiveLevel'] == 1) ? "select_categ" : "clossed";
						echo "<li class=\"{$class}\" id=\"li_{$rows['tacID']}\">";	
						tools::_display($form);						
						KatalogTAController::wyswietlListeKategoriiSklepuNowyProdukt($rows['tacID'],$rows['tacpID'],$category,$form,"__{$rows['tacID']}",$vars, $currentID);
						
						echo '</li>';
						$i++;
					}
				}			
			if ($sub == 'close') echo '</ul>';
		}
	}
}

